原题链接466. 回文日期
题目难度:简单
题目来源:NOIP2016普及组
题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。
显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。
现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。
一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第 i 个数字和第 9−i 个数字(即从右向左数的第 i 个数字)是相同的。
例如:
对于 2016 年 11 月 19 日,用 8 位数字 20161119 表示,它不是回文的。
对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。
对于 2010 年 10 月 2 日,用 8 位数字 20101002 表示,它不是回文的。
输入格式输入包括两行,每行包括一个 8 ...
原题链接1210. 连号区间数
题目难度:简单
题目来源:第四届蓝桥杯省赛C++ B组,第四届蓝桥杯省赛Java B组
题目描述小明这些天一直在思考这样一个奇怪而有趣的问题:
在 $1 \sim N$ 的某个排列中有多少个连号区间呢?
这里所说的连号区间的定义是:
如果区间 $[L, R]$ 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 $R-L+1$ 的“连续”数列,则称这个区间连号区间。
当 N 很小的时候,小明可以很快地算出答案,但是当 NNN 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。
输入格式第一行是一个正整数 N,表示排列的规模。
第二行是 N 个不同的数字 $P_i$,表示这 N 个数字的某一排列。
输出格式输出一个整数,表示不同连号区间的数目。
数据范围$1 \le N \le 10000$,$1 \le P_i \le N$
输入样例1:1243 2 4 1
输出样例1:17
输入样例2:1253 4 2 5 1
输出样例2:19
样例解释第一个用例中,有 7 个连号区间分别是:$[1,1], [1...
原题链接1204. 错误票据
题目难度:简单
题目来源:第四届蓝桥杯省赛C++ A/B组,第四届蓝桥杯省赛Java A/B组
题目描述某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。
全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
输入格式第一行包含整数 N,表示后面共有 N 行数据。
接下来 N 行,每行包含空格分开的若干个(不大于100个)正整数(不大于100000),每个整数代表一个ID号。
输出格式要求程序输出1行,含两个整数 m,n,用空格分隔。
其中,m表示断号ID,n表示重号ID。
数据范围1≤N≤100
输入样例:12325 6 8 11 9 10 12 9
输出样例:17 9
题目分析这道题目的意思就是从随机开始的一个id序列,存在一个段号和一个重复,需要找到断号和重复的数字
这道题的难度是在数据输入的,他只告诉我们输入的...
原题链接1236. 递增三元组
题目难度:中等
题目来源:第九届蓝桥杯省赛C++ B组,第九届蓝桥杯省赛Java B组
题目描述给定三个整数数组
$A = [A_1, A_2, … A_N]$,$B = [B_1, B_2, … B_N]$,$C = [C_1, C_2, … C_N]$,
请你统计有多少个三元组 $(i, j, k)$ 满足:
$1 \le i, j, k \le N$
$A_i < B_j < C_k$
输入格式第一行包含一个整数 $N$。
第二行包含 $N$ 个整数 $A_1, A_2, … A_N$。
第三行包含 $N$ 个整数 $B_1, B_2, … B_N$。
第四行包含 $N$ 个整数 $C_1, C_2, … C_N$。
输出格式一个整数表示答案。
数据范围$1 \le N \le 10^5$,$0 \le A_i,B_i,C_i \le 10^5$
输入样例:123431 1 12 2 23 3 3
输出样例:127
题目分析这道题的意思很清楚,就是从A、B、C三个数组中选出三个数满足严格小...
原题链接1245. 特别数的和
题目难度:简单
题目来源:第十届蓝桥杯省赛C++ B组,第十届蓝桥杯省赛Java B组
题目描述小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?
输入格式共一行,包含一个整数 n。
输出格式共一行,包含一个整数,表示满足条件的数的和。
数据范围$1 \le n \le 10000$
输入样例:140
输出样例:1574
题目分析这道题比较简单,就是问从1到n中包含2、0、1、9的数的和
这里数据量是很小的,是可以直接用枚举或者模拟来解决的,如果数据量非常大的话就需要用到数位DP了
这里我们可以枚举从1到n,然后再把每一位扣出来是否是2、0、1、9即可
示例代码123456789101112131415161718192021222324#include<iostream>using namespace std;int main(){ ...
原题链接1214. 波动数列
题目难度:中等
题目来源:第五届蓝桥杯省赛C++ A组,第五届蓝桥杯省赛Java A组
题目描述观察这个数列:
1 3 0 2 -1 1 -2 …
这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。
栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢?
输入格式共一行,包含四个整数 n,s,a,b,含义如前面所述。
输出格式共一行,包含一个整数,表示满足条件的方案数。
由于这个数很大,请输出方案数除以 100000007 的余数。
数据范围$1 \le n \le 1000$,$-10^9 \le s \le 10^9$,$1 \le a,b \le 10^6$
输入样例:14 10 2 3
输出样例:12
样例解释两个满足条件的数列分别是2 4 1 3和7 4 1 -2。
题目分析这道题的意思很简单就是长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种
我们可以从数学角度来看,第一项假设为$x$,第二项就为$x+d_...
原题链接1212. 地宫取宝
题目难度:中等
题目来源:第五届蓝桥杯省赛C++ A/B/C组,第五届蓝桥杯省赛Java B/C组
题目描述X 国王有一个地宫宝库,是 $n \times m$ 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。
地宫的入口在左上角,出口在右下角。
小明被带到地宫的入口,国王要求他只能向右或向下行走。
走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。
当小明走到出口时,如果他手中的宝贝恰好是 $k$ 件,则这些宝贝就可以送给小明。
请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 $k$ 件宝贝。
输入格式第一行 3 个整数,$n,m,k$,含义见题目描述。
接下来 $n$ 行,每行有 m 个整数 $C_i$ 用来描述宝库矩阵每个格子的宝贝价值。
输出格式输出一个整数,表示正好取 $k$ 个宝贝的行动方案数。
该数字可能很大,输出它对 $1000000007$ 取模的结果。
数据范围$1 \le n,m \le 50$,$1 \le k \...
原题链接1015. 摘花生
题目难度:简单
题目来源:《信息学奥赛一本通》
题目描述Hello Kitty想摘点花生送给她喜欢的米老鼠。
她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。
地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。
Hello Kitty只能向东或向南走,不能向西或向北走。
问Hello Kitty最多能够摘到多少颗花生。
输入格式第一行是一个整数T,代表一共有多少组数据。
接下来是T组数据。
每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。
每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。
输出格式对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。
数据范围1≤T≤100,1≤R,C≤100,0≤M≤1000
输入样例:123456722 21 13 42 32 3 41 6 5
输出样例:12816
题目分析这道题的意思就是要选择一条能摘到最多...